<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-pragma">{-# LANGUAGE DeriveDataTypeable  #-}</span><span>
</span><span id="line-2"></span><span class="hs-pragma">{-# LANGUAGE DeriveGeneric       #-}</span><span>
</span><span id="line-3"></span><span class="hs-pragma">{-# LANGUAGE ScopedTypeVariables #-}</span><span>
</span><span id="line-4"></span><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Distribution.Utils.NubList</span><span>
</span><span id="line-5"></span><span>    </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="Distribution.Utils.NubList.html#NubList"><span class="hs-identifier">NubList</span></a></span><span>    </span><span class="hs-comment">-- opaque</span><span>
</span><span id="line-6"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.NubList.html#toNubList"><span class="hs-identifier">toNubList</span></a></span><span>  </span><span class="hs-comment">-- smart construtor</span><span>
</span><span id="line-7"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.NubList.html#fromNubList"><span class="hs-identifier">fromNubList</span></a></span><span>
</span><span id="line-8"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.NubList.html#overNubList"><span class="hs-identifier">overNubList</span></a></span><span>
</span><span id="line-9"></span><span>
</span><span id="line-10"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.NubList.html#NubListR"><span class="hs-identifier">NubListR</span></a></span><span>
</span><span id="line-11"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.NubList.html#toNubListR"><span class="hs-identifier">toNubListR</span></a></span><span>
</span><span id="line-12"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.NubList.html#fromNubListR"><span class="hs-identifier">fromNubListR</span></a></span><span>
</span><span id="line-13"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Utils.NubList.html#overNubListR"><span class="hs-identifier">overNubListR</span></a></span><span>
</span><span id="line-14"></span><span>    </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-15"></span><span>
</span><span id="line-16"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="Distribution.Compat.Prelude.html"><span class="hs-identifier">Distribution.Compat.Prelude</span></a></span><span>
</span><span id="line-17"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Prelude.html#"><span class="hs-identifier">Prelude</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-18"></span><span>
</span><span id="line-19"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="Distribution.Simple.Utils.html"><span class="hs-identifier">Distribution.Simple.Utils</span></a></span><span>
</span><span id="line-20"></span><span>
</span><span id="line-21"></span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><a href="../../base/src/Text.Read.html#"><span class="hs-identifier">Text.Read</span></a></span><span> </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">R</span></span><span>
</span><span id="line-22"></span><span>
</span><span id="line-23"></span><span class="hs-comment">-- | NubList : A de-duplicated list that maintains the original order.</span><span>
</span><span id="line-24"></span><span id="local-6989586621679683383"><span id="local-6989586621679683384"></span></span><span class="hs-keyword">newtype</span><span> </span><span id="NubList"><span class="annot"><a href="Distribution.Utils.NubList.html#NubList"><span class="hs-identifier hs-var">NubList</span></a></span></span><span> </span><span id="local-6989586621679683528"><span class="annot"><a href="#local-6989586621679683528"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-25"></span><span>    </span><span id="NubList"><span class="annot"><a href="Distribution.Utils.NubList.html#NubList"><span class="hs-identifier hs-var">NubList</span></a></span></span><span> </span><span class="hs-special">{</span><span> </span><span id="fromNubList"><span class="annot"><span class="annottext">forall a. NubList a -&gt; [a]
</span><a href="Distribution.Utils.NubList.html#fromNubList"><span class="hs-identifier hs-var hs-var">fromNubList</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="#local-6989586621679683528"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-26"></span><span>    </span><span class="hs-keyword">deriving</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679683374"><span id="local-6989586621679683379"><span class="annot"><span class="annottext">NubList a -&gt; NubList a -&gt; Bool
(NubList a -&gt; NubList a -&gt; Bool)
-&gt; (NubList a -&gt; NubList a -&gt; Bool) -&gt; Eq (NubList a)
forall a. Eq a =&gt; NubList a -&gt; NubList a -&gt; Bool
forall a. (a -&gt; a -&gt; Bool) -&gt; (a -&gt; a -&gt; Bool) -&gt; Eq a
/= :: NubList a -&gt; NubList a -&gt; Bool
$c/= :: forall a. Eq a =&gt; NubList a -&gt; NubList a -&gt; Bool
== :: NubList a -&gt; NubList a -&gt; Bool
$c== :: forall a. Eq a =&gt; NubList a -&gt; NubList a -&gt; Bool
</span><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var">Eq</span></span></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">(forall x. NubList a -&gt; Rep (NubList a) x)
-&gt; (forall x. Rep (NubList a) x -&gt; NubList a)
-&gt; Generic (NubList a)
forall x. Rep (NubList a) x -&gt; NubList a
forall x. NubList a -&gt; Rep (NubList a) x
forall a.
(forall x. a -&gt; Rep a x) -&gt; (forall x. Rep a x -&gt; a) -&gt; Generic a
forall a x. Rep (NubList a) x -&gt; NubList a
forall a x. NubList a -&gt; Rep (NubList a) x
$cto :: forall a x. Rep (NubList a) x -&gt; NubList a
$cfrom :: forall a x. NubList a -&gt; Rep (NubList a) x
</span><a href="../../base/src/GHC.Generics.html#Generic"><span class="hs-identifier hs-var hs-var hs-var hs-var">Generic</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../base/src/Data.Typeable.Internal.html#Typeable"><span class="hs-identifier hs-type">Typeable</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-27"></span><span>
</span><span id="line-28"></span><span class="hs-comment">-- NubList assumes that nub retains the list order while removing duplicate</span><span>
</span><span id="line-29"></span><span class="hs-comment">-- elements (keeping the first occurrence). Documentation for &quot;Data.List.nub&quot;</span><span>
</span><span id="line-30"></span><span class="hs-comment">-- does not specifically state that ordering is maintained so we will add a test</span><span>
</span><span id="line-31"></span><span class="hs-comment">-- for that to the test suite.</span><span>
</span><span id="line-32"></span><span>
</span><span id="line-33"></span><span class="hs-comment">-- | Smart constructor for the NubList type.</span><span>
</span><span id="line-34"></span><span id="local-6989586621679683522"><span class="annot"><a href="Distribution.Utils.NubList.html#toNubList"><span class="hs-identifier hs-type">toNubList</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Ord</span></span><span> </span><span class="annot"><a href="#local-6989586621679683522"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="#local-6989586621679683522"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.NubList.html#NubList"><span class="hs-identifier hs-type">NubList</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679683522"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-35"></span><span id="toNubList"><span class="annot"><span class="annottext">toNubList :: forall a. Ord a =&gt; [a] -&gt; NubList a
</span><a href="Distribution.Utils.NubList.html#toNubList"><span class="hs-identifier hs-var hs-var">toNubList</span></a></span></span><span> </span><span id="local-6989586621679683364"><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621679683364"><span class="hs-identifier hs-var">list</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[a] -&gt; NubList a
forall a. [a] -&gt; NubList a
</span><a href="Distribution.Utils.NubList.html#NubList"><span class="hs-identifier hs-var">NubList</span></a></span><span> </span><span class="annot"><span class="annottext">([a] -&gt; NubList a) -&gt; [a] -&gt; NubList a
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">[a] -&gt; [a]
forall a. Ord a =&gt; [a] -&gt; [a]
</span><a href="Distribution.Utils.Generic.html#ordNub"><span class="hs-identifier hs-var">ordNub</span></a></span><span> </span><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621679683364"><span class="hs-identifier hs-var">list</span></a></span><span>
</span><span id="line-36"></span><span>
</span><span id="line-37"></span><span class="hs-comment">-- | Lift a function over lists to a function over NubLists.</span><span>
</span><span id="line-38"></span><span id="local-6989586621679683516"><span class="annot"><a href="Distribution.Utils.NubList.html#overNubList"><span class="hs-identifier hs-type">overNubList</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Ord</span></span><span> </span><span class="annot"><a href="#local-6989586621679683516"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><a href="#local-6989586621679683516"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="#local-6989586621679683516"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.NubList.html#NubList"><span class="hs-identifier hs-type">NubList</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679683516"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.NubList.html#NubList"><span class="hs-identifier hs-type">NubList</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679683516"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-39"></span><span id="overNubList"><span class="annot"><span class="annottext">overNubList :: forall a. Ord a =&gt; ([a] -&gt; [a]) -&gt; NubList a -&gt; NubList a
</span><a href="Distribution.Utils.NubList.html#overNubList"><span class="hs-identifier hs-var hs-var">overNubList</span></a></span></span><span> </span><span id="local-6989586621679683360"><span class="annot"><span class="annottext">[a] -&gt; [a]
</span><a href="#local-6989586621679683360"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.NubList.html#NubList"><span class="hs-identifier hs-type">NubList</span></a></span><span> </span><span id="local-6989586621679683359"><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621679683359"><span class="hs-identifier hs-var">list</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[a] -&gt; NubList a
forall a. Ord a =&gt; [a] -&gt; NubList a
</span><a href="Distribution.Utils.NubList.html#toNubList"><span class="hs-identifier hs-var">toNubList</span></a></span><span> </span><span class="annot"><span class="annottext">([a] -&gt; NubList a) -&gt; ([a] -&gt; [a]) -&gt; [a] -&gt; NubList a
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">[a] -&gt; [a]
</span><a href="#local-6989586621679683360"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">([a] -&gt; NubList a) -&gt; [a] -&gt; NubList a
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621679683359"><span class="hs-identifier hs-var">list</span></a></span><span>
</span><span id="line-40"></span><span>
</span><span id="line-41"></span><span class="hs-comment">-- | Monoid operations on NubLists.</span><span>
</span><span id="line-42"></span><span class="hs-comment">-- For a valid Monoid instance we need to satistfy the required monoid laws;</span><span>
</span><span id="line-43"></span><span class="hs-comment">-- identity, associativity and closure.</span><span>
</span><span id="line-44"></span><span class="hs-comment">--</span><span>
</span><span id="line-45"></span><span class="hs-comment">-- Identity : by inspection:</span><span>
</span><span id="line-46"></span><span class="hs-comment">--      mempty `mappend` NubList xs == NubList xs `mappend` mempty</span><span>
</span><span id="line-47"></span><span class="hs-comment">--</span><span>
</span><span id="line-48"></span><span class="hs-comment">-- Associativity : by inspection:</span><span>
</span><span id="line-49"></span><span class="hs-comment">--      (NubList xs `mappend` NubList ys) `mappend` NubList zs</span><span>
</span><span id="line-50"></span><span class="hs-comment">--      == NubList xs `mappend` (NubList ys `mappend` NubList zs)</span><span>
</span><span id="line-51"></span><span class="hs-comment">--</span><span>
</span><span id="line-52"></span><span class="hs-comment">-- Closure : appending two lists of type a and removing duplicates obviously</span><span>
</span><span id="line-53"></span><span class="hs-comment">-- does not change the type.</span><span>
</span><span id="line-54"></span><span>
</span><span id="line-55"></span><span id="local-6989586621679683510"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679683352"><span class="annot"><span class="hs-identifier hs-type">Ord</span></span><span> </span><span class="annot"><a href="#local-6989586621679683510"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Base.html#Monoid"><span class="hs-identifier hs-type">Monoid</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.NubList.html#NubList"><span class="hs-identifier hs-type">NubList</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679683510"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-56"></span><span>    </span><span id="local-6989586621679683350"><span class="annot"><span class="annottext">mempty :: NubList a
</span><a href="../../base/src/GHC.Base.html#mempty"><span class="hs-identifier hs-var hs-var hs-var hs-var">mempty</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[a] -&gt; NubList a
forall a. [a] -&gt; NubList a
</span><a href="Distribution.Utils.NubList.html#NubList"><span class="hs-identifier hs-var">NubList</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-57"></span><span>    </span><span id="local-6989586621679683348"><span class="annot"><span class="annottext">mappend :: NubList a -&gt; NubList a -&gt; NubList a
</span><a href="../../base/src/GHC.Base.html#mappend"><span class="hs-identifier hs-var hs-var hs-var hs-var">mappend</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NubList a -&gt; NubList a -&gt; NubList a
forall a. Semigroup a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Base.html#%3C%3E"><span class="hs-operator hs-var">(&lt;&gt;)</span></a></span></span><span>
</span><span id="line-58"></span><span>
</span><span id="line-59"></span><span id="local-6989586621679683347"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679683342"><span id="local-6989586621679683344"><span class="annot"><span class="hs-identifier hs-type">Ord</span></span><span> </span><span class="annot"><a href="#local-6989586621679683347"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Base.html#Semigroup"><span class="hs-identifier hs-type">Semigroup</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.NubList.html#NubList"><span class="hs-identifier hs-type">NubList</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679683347"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-60"></span><span>    </span><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.NubList.html#NubList"><span class="hs-identifier hs-type">NubList</span></a></span><span> </span><span id="local-6989586621679683339"><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621679683339"><span class="hs-identifier hs-var">xs</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621679683338"><span class="annot"><span class="annottext">&lt;&gt; :: NubList a -&gt; NubList a -&gt; NubList a
</span><a href="../../base/src/GHC.Base.html#%3C%3E"><span class="hs-operator hs-var hs-var hs-var hs-var">&lt;&gt;</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.NubList.html#NubList"><span class="hs-identifier hs-type">NubList</span></a></span><span> </span><span id="local-6989586621679683337"><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621679683337"><span class="hs-identifier hs-var">ys</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[a] -&gt; NubList a
forall a. [a] -&gt; NubList a
</span><a href="Distribution.Utils.NubList.html#NubList"><span class="hs-identifier hs-var">NubList</span></a></span><span> </span><span class="annot"><span class="annottext">([a] -&gt; NubList a) -&gt; [a] -&gt; NubList a
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621679683339"><span class="hs-identifier hs-var">xs</span></a></span><span> </span><span class="annot"><span class="annottext">[a] -&gt; [a] -&gt; [a]
forall a. Ord a =&gt; [a] -&gt; [a] -&gt; [a]
</span><a href="Distribution.Utils.Generic.html#listUnion"><span class="hs-operator hs-var">`listUnion`</span></a></span><span> </span><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621679683337"><span class="hs-identifier hs-var">ys</span></a></span></span><span>
</span><span id="line-61"></span><span>
</span><span id="line-62"></span><span id="local-6989586621679683502"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679683331"><span id="local-6989586621679683334"><span class="annot"><a href="../../base/src/GHC.Show.html#Show"><span class="hs-identifier hs-type">Show</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679683502"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Show.html#Show"><span class="hs-identifier hs-type">Show</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.NubList.html#NubList"><span class="hs-identifier hs-type">NubList</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679683502"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-63"></span><span>    </span><span id="local-6989586621679683327"><span class="annot"><span class="annottext">show :: NubList a -&gt; String
</span><a href="../../base/src/GHC.Show.html#show"><span class="hs-identifier hs-var hs-var hs-var hs-var">show</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.NubList.html#NubList"><span class="hs-identifier hs-type">NubList</span></a></span><span> </span><span id="local-6989586621679683325"><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621679683325"><span class="hs-identifier hs-var">list</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[a] -&gt; String
forall a. Show a =&gt; a -&gt; String
</span><a href="../../base/src/GHC.Show.html#show"><span class="hs-identifier hs-var">show</span></a></span><span> </span><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621679683325"><span class="hs-identifier hs-var">list</span></a></span></span><span>
</span><span id="line-64"></span><span>
</span><span id="line-65"></span><span id="local-6989586621679683497"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679683318"><span id="local-6989586621679683321"><span id="local-6989586621679683323"><span class="hs-special">(</span><span class="annot"><span class="hs-identifier hs-type">Ord</span></span><span> </span><span class="annot"><a href="#local-6989586621679683497"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../base/src/GHC.Read.html#Read"><span class="hs-identifier hs-type">Read</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679683497"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Read.html#Read"><span class="hs-identifier hs-type">Read</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.NubList.html#NubList"><span class="hs-identifier hs-type">NubList</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679683497"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span></span></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-66"></span><span>    </span><span id="local-6989586621679683314"><span class="annot"><span class="annottext">readPrec :: ReadPrec (NubList a)
</span><a href="../../base/src/GHC.Read.html#readPrec"><span class="hs-identifier hs-var hs-var hs-var hs-var">readPrec</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">([a] -&gt; NubList a) -&gt; ReadPrec (NubList a)
forall a (l :: * -&gt; *). Read a =&gt; ([a] -&gt; l a) -&gt; ReadPrec (l a)
</span><a href="Distribution.Utils.NubList.html#readNubList"><span class="hs-identifier hs-var">readNubList</span></a></span><span> </span><span class="annot"><span class="annottext">[a] -&gt; NubList a
forall a. Ord a =&gt; [a] -&gt; NubList a
</span><a href="Distribution.Utils.NubList.html#toNubList"><span class="hs-identifier hs-var">toNubList</span></a></span></span><span>
</span><span id="line-67"></span><span>
</span><span id="line-68"></span><span class="hs-comment">-- | Helper used by NubList/NubListR's Read instances.</span><span>
</span><span id="line-69"></span><span id="local-6989586621679683495"><span id="local-6989586621679683496"><span class="annot"><a href="Distribution.Utils.NubList.html#readNubList"><span class="hs-identifier hs-type">readNubList</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Read.html#Read"><span class="hs-identifier hs-type">Read</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679683496"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><a href="#local-6989586621679683496"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621679683495"><span class="hs-identifier hs-type">l</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679683496"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/Text.ParserCombinators.ReadPrec.html#ReadPrec"><span class="hs-identifier hs-type">R.ReadPrec</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679683495"><span class="hs-identifier hs-type">l</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679683496"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span></span></span><span>
</span><span id="line-70"></span><span id="readNubList"><span class="annot"><span class="annottext">readNubList :: forall a (l :: * -&gt; *). Read a =&gt; ([a] -&gt; l a) -&gt; ReadPrec (l a)
</span><a href="Distribution.Utils.NubList.html#readNubList"><span class="hs-identifier hs-var hs-var">readNubList</span></a></span></span><span> </span><span id="local-6989586621679683306"><span class="annot"><span class="annottext">[a] -&gt; l a
</span><a href="#local-6989586621679683306"><span class="hs-identifier hs-var">listToL</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">ReadPrec (l a) -&gt; ReadPrec (l a)
forall a. ReadPrec a -&gt; ReadPrec a
</span><a href="../../base/src/GHC.Read.html#parens"><span class="hs-identifier hs-var">R.parens</span></a></span><span> </span><span class="annot"><span class="annottext">(ReadPrec (l a) -&gt; ReadPrec (l a))
-&gt; (ReadPrec (l a) -&gt; ReadPrec (l a))
-&gt; ReadPrec (l a)
-&gt; ReadPrec (l a)
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; ReadPrec (l a) -&gt; ReadPrec (l a)
forall a. Int -&gt; ReadPrec a -&gt; ReadPrec a
</span><a href="../../base/src/Text.ParserCombinators.ReadPrec.html#prec"><span class="hs-identifier hs-var">R.prec</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">10</span></span><span> </span><span class="annot"><span class="annottext">(ReadPrec (l a) -&gt; ReadPrec (l a))
-&gt; ReadPrec (l a) -&gt; ReadPrec (l a)
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">([a] -&gt; l a) -&gt; ReadPrec [a] -&gt; ReadPrec (l a)
forall (f :: * -&gt; *) a b. Functor f =&gt; (a -&gt; b) -&gt; f a -&gt; f b
</span><a href="../../base/src/GHC.Base.html#fmap"><span class="hs-identifier hs-var">fmap</span></a></span><span> </span><span class="annot"><span class="annottext">[a] -&gt; l a
</span><a href="#local-6989586621679683306"><span class="hs-identifier hs-var">listToL</span></a></span><span> </span><span class="annot"><span class="annottext">ReadPrec [a]
forall a. Read a =&gt; ReadPrec a
</span><a href="../../base/src/GHC.Read.html#readPrec"><span class="hs-identifier hs-var">R.readPrec</span></a></span><span>
</span><span id="line-71"></span><span>
</span><span id="line-72"></span><span class="hs-comment">-- | Binary instance for 'NubList a' is the same as for '[a]'. For 'put', we</span><span>
</span><span id="line-73"></span><span class="hs-comment">-- just pull off constructor and put the list. For 'get', we get the list and</span><span>
</span><span id="line-74"></span><span class="hs-comment">-- make a 'NubList' out of it using 'toNubList'.</span><span>
</span><span id="line-75"></span><span id="local-6989586621679683483"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679683300"><span class="hs-special">(</span><span class="annot"><span class="hs-identifier hs-type">Ord</span></span><span> </span><span class="annot"><a href="#local-6989586621679683483"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../binary/src/Data.Binary.Class.html#Binary"><span class="hs-identifier hs-type">Binary</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679683483"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="../../binary/src/Data.Binary.Class.html#Binary"><span class="hs-identifier hs-type">Binary</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.NubList.html#NubList"><span class="hs-identifier hs-type">NubList</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679683483"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-76"></span><span>    </span><span id="local-6989586621679683296"><span class="annot"><span class="annottext">put :: NubList a -&gt; Put
</span><a href="../../binary/src/Data.Binary.Class.html#put"><span class="hs-identifier hs-var hs-var hs-var hs-var">put</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.NubList.html#NubList"><span class="hs-identifier hs-type">NubList</span></a></span><span> </span><span id="local-6989586621679683294"><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621679683294"><span class="hs-identifier hs-var">l</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[a] -&gt; Put
forall t. Binary t =&gt; t -&gt; Put
</span><a href="../../binary/src/Data.Binary.Class.html#put"><span class="hs-identifier hs-var">put</span></a></span><span> </span><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621679683294"><span class="hs-identifier hs-var">l</span></a></span><span>
</span><span id="line-77"></span><span>    </span><span id="local-6989586621679683289"><span class="annot"><span class="annottext">get :: Get (NubList a)
</span><a href="../../binary/src/Data.Binary.Class.html#get"><span class="hs-identifier hs-var hs-var hs-var hs-var">get</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">([a] -&gt; NubList a) -&gt; Get [a] -&gt; Get (NubList a)
forall (f :: * -&gt; *) a b. Functor f =&gt; (a -&gt; b) -&gt; f a -&gt; f b
</span><a href="../../base/src/GHC.Base.html#fmap"><span class="hs-identifier hs-var">fmap</span></a></span><span> </span><span class="annot"><span class="annottext">[a] -&gt; NubList a
forall a. Ord a =&gt; [a] -&gt; NubList a
</span><a href="Distribution.Utils.NubList.html#toNubList"><span class="hs-identifier hs-var">toNubList</span></a></span><span> </span><span class="annot"><span class="annottext">Get [a]
forall t. Binary t =&gt; Get t
</span><a href="../../binary/src/Data.Binary.Class.html#get"><span class="hs-identifier hs-var">get</span></a></span></span><span>
</span><span id="line-78"></span><span>
</span><span id="line-79"></span><span id="local-6989586621679683476"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679683281"><span id="local-6989586621679683283"><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679683476"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.Structured.html#Structured"><span class="hs-identifier hs-type">Structured</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.NubList.html#NubList"><span class="hs-identifier hs-type">NubList</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679683476"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span></span></span></span><span>
</span><span id="line-80"></span><span>
</span><span id="line-81"></span><span class="hs-comment">-- | NubListR : A right-biased version of 'NubList'. That is @toNubListR</span><span>
</span><span id="line-82"></span><span class="hs-comment">-- [&quot;-XNoFoo&quot;, &quot;-XFoo&quot;, &quot;-XNoFoo&quot;]@ will result in @[&quot;-XFoo&quot;, &quot;-XNoFoo&quot;]@,</span><span>
</span><span id="line-83"></span><span class="hs-comment">-- unlike the normal 'NubList', which is left-biased. Built on top of</span><span>
</span><span id="line-84"></span><span class="hs-comment">-- 'ordNubRight' and 'listUnionRight'.</span><span>
</span><span id="line-85"></span><span class="hs-keyword">newtype</span><span> </span><span id="NubListR"><span class="annot"><a href="Distribution.Utils.NubList.html#NubListR"><span class="hs-identifier hs-var">NubListR</span></a></span></span><span> </span><span id="local-6989586621679683475"><span class="annot"><a href="#local-6989586621679683475"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-86"></span><span>    </span><span id="NubListR"><span class="annot"><a href="Distribution.Utils.NubList.html#NubListR"><span class="hs-identifier hs-var">NubListR</span></a></span></span><span> </span><span class="hs-special">{</span><span> </span><span id="fromNubListR"><span class="annot"><span class="annottext">forall a. NubListR a -&gt; [a]
</span><a href="Distribution.Utils.NubList.html#fromNubListR"><span class="hs-identifier hs-var hs-var">fromNubListR</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="#local-6989586621679683475"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-87"></span><span>    </span><span class="hs-keyword">deriving</span><span> </span><span id="local-6989586621679683272"><span id="local-6989586621679683276"><span class="annot"><span class="annottext">NubListR a -&gt; NubListR a -&gt; Bool
(NubListR a -&gt; NubListR a -&gt; Bool)
-&gt; (NubListR a -&gt; NubListR a -&gt; Bool) -&gt; Eq (NubListR a)
forall a. Eq a =&gt; NubListR a -&gt; NubListR a -&gt; Bool
forall a. (a -&gt; a -&gt; Bool) -&gt; (a -&gt; a -&gt; Bool) -&gt; Eq a
/= :: NubListR a -&gt; NubListR a -&gt; Bool
$c/= :: forall a. Eq a =&gt; NubListR a -&gt; NubListR a -&gt; Bool
== :: NubListR a -&gt; NubListR a -&gt; Bool
$c== :: forall a. Eq a =&gt; NubListR a -&gt; NubListR a -&gt; Bool
</span><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var">Eq</span></span></span></span><span>
</span><span id="line-88"></span><span>
</span><span id="line-89"></span><span class="hs-comment">-- | Smart constructor for the NubListR type.</span><span>
</span><span id="line-90"></span><span id="local-6989586621679683472"><span class="annot"><a href="Distribution.Utils.NubList.html#toNubListR"><span class="hs-identifier hs-type">toNubListR</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Ord</span></span><span> </span><span class="annot"><a href="#local-6989586621679683472"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="#local-6989586621679683472"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.NubList.html#NubListR"><span class="hs-identifier hs-type">NubListR</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679683472"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-91"></span><span id="toNubListR"><span class="annot"><span class="annottext">toNubListR :: forall a. Ord a =&gt; [a] -&gt; NubListR a
</span><a href="Distribution.Utils.NubList.html#toNubListR"><span class="hs-identifier hs-var hs-var">toNubListR</span></a></span></span><span> </span><span id="local-6989586621679683266"><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621679683266"><span class="hs-identifier hs-var">list</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[a] -&gt; NubListR a
forall a. [a] -&gt; NubListR a
</span><a href="Distribution.Utils.NubList.html#NubListR"><span class="hs-identifier hs-var">NubListR</span></a></span><span> </span><span class="annot"><span class="annottext">([a] -&gt; NubListR a) -&gt; [a] -&gt; NubListR a
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">[a] -&gt; [a]
forall a. Ord a =&gt; [a] -&gt; [a]
</span><a href="Distribution.Utils.Generic.html#ordNubRight"><span class="hs-identifier hs-var">ordNubRight</span></a></span><span> </span><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621679683266"><span class="hs-identifier hs-var">list</span></a></span><span>
</span><span id="line-92"></span><span>
</span><span id="line-93"></span><span class="hs-comment">-- | Lift a function over lists to a function over NubListRs.</span><span>
</span><span id="line-94"></span><span id="local-6989586621679683470"><span class="annot"><a href="Distribution.Utils.NubList.html#overNubListR"><span class="hs-identifier hs-type">overNubListR</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Ord</span></span><span> </span><span class="annot"><a href="#local-6989586621679683470"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><a href="#local-6989586621679683470"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="#local-6989586621679683470"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.NubList.html#NubListR"><span class="hs-identifier hs-type">NubListR</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679683470"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Distribution.Utils.NubList.html#NubListR"><span class="hs-identifier hs-type">NubListR</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679683470"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-95"></span><span id="overNubListR"><span class="annot"><span class="annottext">overNubListR :: forall a. Ord a =&gt; ([a] -&gt; [a]) -&gt; NubListR a -&gt; NubListR a
</span><a href="Distribution.Utils.NubList.html#overNubListR"><span class="hs-identifier hs-var hs-var">overNubListR</span></a></span></span><span> </span><span id="local-6989586621679683262"><span class="annot"><span class="annottext">[a] -&gt; [a]
</span><a href="#local-6989586621679683262"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.NubList.html#NubListR"><span class="hs-identifier hs-type">NubListR</span></a></span><span> </span><span id="local-6989586621679683261"><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621679683261"><span class="hs-identifier hs-var">list</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[a] -&gt; NubListR a
forall a. Ord a =&gt; [a] -&gt; NubListR a
</span><a href="Distribution.Utils.NubList.html#toNubListR"><span class="hs-identifier hs-var">toNubListR</span></a></span><span> </span><span class="annot"><span class="annottext">([a] -&gt; NubListR a) -&gt; ([a] -&gt; [a]) -&gt; [a] -&gt; NubListR a
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">[a] -&gt; [a]
</span><a href="#local-6989586621679683262"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">([a] -&gt; NubListR a) -&gt; [a] -&gt; NubListR a
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621679683261"><span class="hs-identifier hs-var">list</span></a></span><span>
</span><span id="line-96"></span><span>
</span><span id="line-97"></span><span id="local-6989586621679683468"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679683255"><span class="annot"><span class="hs-identifier hs-type">Ord</span></span><span> </span><span class="annot"><a href="#local-6989586621679683468"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Base.html#Monoid"><span class="hs-identifier hs-type">Monoid</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.NubList.html#NubListR"><span class="hs-identifier hs-type">NubListR</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679683468"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-98"></span><span>  </span><span id="local-6989586621679683254"><span class="annot"><span class="annottext">mempty :: NubListR a
</span><a href="../../base/src/GHC.Base.html#mempty"><span class="hs-identifier hs-var hs-var hs-var hs-var">mempty</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[a] -&gt; NubListR a
forall a. [a] -&gt; NubListR a
</span><a href="Distribution.Utils.NubList.html#NubListR"><span class="hs-identifier hs-var">NubListR</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-99"></span><span>  </span><span id="local-6989586621679683252"><span class="annot"><span class="annottext">mappend :: NubListR a -&gt; NubListR a -&gt; NubListR a
</span><a href="../../base/src/GHC.Base.html#mappend"><span class="hs-identifier hs-var hs-var hs-var hs-var">mappend</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">NubListR a -&gt; NubListR a -&gt; NubListR a
forall a. Semigroup a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Base.html#%3C%3E"><span class="hs-operator hs-var">(&lt;&gt;)</span></a></span></span><span>
</span><span id="line-100"></span><span>
</span><span id="line-101"></span><span id="local-6989586621679683251"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679683246"><span id="local-6989586621679683248"><span class="annot"><span class="hs-identifier hs-type">Ord</span></span><span> </span><span class="annot"><a href="#local-6989586621679683251"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Base.html#Semigroup"><span class="hs-identifier hs-type">Semigroup</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.NubList.html#NubListR"><span class="hs-identifier hs-type">NubListR</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679683251"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-102"></span><span>  </span><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.NubList.html#NubListR"><span class="hs-identifier hs-type">NubListR</span></a></span><span> </span><span id="local-6989586621679683244"><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621679683244"><span class="hs-identifier hs-var">xs</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621679683243"><span class="annot"><span class="annottext">&lt;&gt; :: NubListR a -&gt; NubListR a -&gt; NubListR a
</span><a href="../../base/src/GHC.Base.html#%3C%3E"><span class="hs-operator hs-var hs-var hs-var hs-var">&lt;&gt;</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.NubList.html#NubListR"><span class="hs-identifier hs-type">NubListR</span></a></span><span> </span><span id="local-6989586621679683242"><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621679683242"><span class="hs-identifier hs-var">ys</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[a] -&gt; NubListR a
forall a. [a] -&gt; NubListR a
</span><a href="Distribution.Utils.NubList.html#NubListR"><span class="hs-identifier hs-var">NubListR</span></a></span><span> </span><span class="annot"><span class="annottext">([a] -&gt; NubListR a) -&gt; [a] -&gt; NubListR a
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621679683244"><span class="hs-identifier hs-var">xs</span></a></span><span> </span><span class="annot"><span class="annottext">[a] -&gt; [a] -&gt; [a]
forall a. Ord a =&gt; [a] -&gt; [a] -&gt; [a]
</span><a href="Distribution.Utils.Generic.html#listUnionRight"><span class="hs-operator hs-var">`listUnionRight`</span></a></span><span> </span><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621679683242"><span class="hs-identifier hs-var">ys</span></a></span></span><span>
</span><span id="line-103"></span><span>
</span><span id="line-104"></span><span id="local-6989586621679683467"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679683236"><span id="local-6989586621679683239"><span class="annot"><a href="../../base/src/GHC.Show.html#Show"><span class="hs-identifier hs-type">Show</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679683467"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Show.html#Show"><span class="hs-identifier hs-type">Show</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.NubList.html#NubListR"><span class="hs-identifier hs-type">NubListR</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679683467"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-105"></span><span>  </span><span id="local-6989586621679683234"><span class="annot"><span class="annottext">show :: NubListR a -&gt; String
</span><a href="#local-6989586621679683234"><span class="hs-identifier hs-var hs-var hs-var hs-var">show</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.NubList.html#NubListR"><span class="hs-identifier hs-type">NubListR</span></a></span><span> </span><span id="local-6989586621679683233"><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621679683233"><span class="hs-identifier hs-var">list</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[a] -&gt; String
forall a. Show a =&gt; a -&gt; String
</span><a href="../../base/src/GHC.Show.html#show"><span class="hs-identifier hs-var">show</span></a></span><span> </span><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621679683233"><span class="hs-identifier hs-var">list</span></a></span></span><span>
</span><span id="line-106"></span><span>
</span><span id="line-107"></span><span id="local-6989586621679683466"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679683226"><span id="local-6989586621679683229"><span id="local-6989586621679683231"><span class="hs-special">(</span><span class="annot"><span class="hs-identifier hs-type">Ord</span></span><span> </span><span class="annot"><a href="#local-6989586621679683466"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../base/src/GHC.Read.html#Read"><span class="hs-identifier hs-type">Read</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679683466"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Read.html#Read"><span class="hs-identifier hs-type">Read</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Distribution.Utils.NubList.html#NubListR"><span class="hs-identifier hs-type">NubListR</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679683466"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span></span></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-108"></span><span>    </span><span id="local-6989586621679683223"><span class="annot"><span class="annottext">readPrec :: ReadPrec (NubListR a)
</span><a href="#local-6989586621679683223"><span class="hs-identifier hs-var hs-var hs-var hs-var">readPrec</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">([a] -&gt; NubListR a) -&gt; ReadPrec (NubListR a)
forall a (l :: * -&gt; *). Read a =&gt; ([a] -&gt; l a) -&gt; ReadPrec (l a)
</span><a href="Distribution.Utils.NubList.html#readNubList"><span class="hs-identifier hs-var">readNubList</span></a></span><span> </span><span class="annot"><span class="annottext">[a] -&gt; NubListR a
forall a. Ord a =&gt; [a] -&gt; NubListR a
</span><a href="Distribution.Utils.NubList.html#toNubListR"><span class="hs-identifier hs-var">toNubListR</span></a></span></span><span>
</span><span id="line-109"></span></pre></body></html>